home *** CD-ROM | disk | FTP | other *** search
/ Delphi Programmer's Power Pack / Delphi Volume 1.iso / e_to_l / edsspell / wpspell.pas < prev   
Pascal/Delphi Source File  |  1996-09-15  |  11KB  |  341 lines

  1. (* WPSPELL.PAS - Copyright (c) 1995-1996, Eminent Domain Software *)
  2.  
  3. unit WPSpell;
  4.   {-WordPerfect style spell dialog for EDSSpell component}
  5. interface
  6. uses
  7.   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  8.   Forms, Dialogs, StdCtrls, Buttons, Menus,
  9.   LexDCT, ExtCtrls, EDSUtil, AbsSpell, SpellGbl;
  10.  
  11. type
  12.   TWPLabels = (tlblFound, tlblNotFound, tlblReplace, tlblSuggestions,
  13.                tbtnReplace, tbtnAdd, tbtnSkip, tbtnSkipAll,
  14.                tbtnSuggest, tbtnClose);
  15.   TLabelArray = array[TWPLabels] of string[20];
  16. const
  17.   cLabels : array[TLanguages] of TLabelArray =
  18.       {English}   (('Found', 'Not Found', 'Replace &With', 'Sugg&estions',
  19.                     '&Replace', '&Add', 'Skip &Once', 'Skip &Always',
  20.                     '&Suggest', 'Close'),
  21.       {Spanish}    ('Encontrado', 'No Encontrado', 'Reemplazar Con', 'Sugerencias',
  22.                     'Reemplazar', 'A±adir', 'Saltar', 'Ignorar',
  23.                     'Sugerir', 'Cerrar'),
  24.       {British}    ('Found', 'Not Found', 'Replace &With', 'Sugg&estions',
  25.                     '&Replace', '&Add', 'Skip &Once', 'Skip &Always',
  26.                     '&Suggest', 'Close'),
  27.       {Italian}    ('Trovato', 'Non trovato', 'Modifica', 'Suggerimenti',
  28.                     'Sostituisci', 'Aggiungi', 'Salta', 'Salta Tutti',
  29.                     'Suggerisci', 'Cancella'),
  30.       {Dutch}      ('Gevonden', 'Niet gevonden', 'Vervangen door', 'Suggesties',
  31.                     'Vervang', 'Toevoegen', 'Negeer', 'Totaal negeren',
  32.                     'Suggesties', 'Annuleren'));
  33.  
  34. type
  35.   TWPSpellDlg = class(TAbsSpellDialog)
  36.     lblFound: TLabel;
  37.     lblNotFound: TLabel;
  38.     lblReplace: TLabel;
  39.     edtWord: TEnterEdit;
  40.     lblSuggestions: TLabel;
  41.     lstSuggest: TNewListBox;
  42.     btnReplace: TBitBtn;
  43.     btnSkip: TBitBtn;
  44.     btnSkipAll: TBitBtn;
  45.     btnSuggest: TBitBtn;
  46.     btnAdd: TBitBtn;
  47.     btnClose: TBitBtn;
  48.     pnlIcons: TPanel;
  49.     btnA: TSpeedButton;
  50.     btnE: TSpeedButton;
  51.     btnI: TSpeedButton;
  52.     btnO: TSpeedButton;
  53.     btnU: TSpeedButton;
  54.     btnN: TSpeedButton;
  55.     btnN2: TSpeedButton;
  56.     procedure edtWordExit(Sender: TObject);
  57.     procedure lstSuggestChange(Sender: TObject);
  58.     procedure lstSuggestDblClick(Sender: TObject);
  59.     procedure FormKeyDown(Sender: TObject; var Key: Word;
  60.       Shift: TShiftState);
  61.     procedure AccentClick(Sender: TObject);
  62.     procedure lstSuggestMouseDown(Sender: TObject; Button: TMouseButton;
  63.       Shift: TShiftState; X, Y: Integer);
  64.     procedure btnSuggestClick(Sender: TObject);
  65.     procedure btnReplaceClick(Sender: TObject);
  66.     procedure btnAddClick(Sender: TObject);
  67.     procedure btnSkipClick(Sender: TObject);
  68.     procedure btnSkipAllClick(Sender: TObject);
  69.     procedure btnCloseClick(Sender: TObject);
  70.     procedure lstSuggestClick(Sender: TObject);
  71.     procedure lstSuggestEnter(Sender: TObject);
  72.     procedure QuickSuggest(Sender: TObject; var Key: Word;
  73.       Shift: TShiftState);
  74.   private
  75.     { Private declarations }
  76.   public
  77.     { Public declarations }
  78.  
  79.     {--- Extensions of TAbsSpellDialog ---}
  80.     {--- Labels and Prompts ----}
  81.     procedure SetNotFoundPrompt (ToString: String);  override;
  82.       {-sets the not found prompt}
  83.     procedure SetNotFoundCaption (ToString: String);  override;
  84.       {-sets the not found caption}
  85.     procedure SetEditWord (ToWord: String);  override;
  86.       {-sets the edit word string}
  87.     function  GetEditWord: String;  override;
  88.       {-gets the edit word}
  89.     procedure SetEditAsActive;  override;
  90.       {-sets activecontrol the edit control}
  91.     procedure SetLabelLanguage;  override;
  92.       {-sets labels and buttons to a the language}
  93.  
  94.     {--- Buttons ---}
  95.     procedure EnableSkipButtons;  override;
  96.       {-enables the Skip and Skip All buttons}
  97.       {-or          Ignore and Ignore All}
  98.     procedure DisableSkipButtons;  override;
  99.       {-disables the Skip and Skip All buttons}
  100.       {-or           Ignore and Ignore All}
  101.  
  102.     {--- Accented Buttons ---}
  103.     procedure SetAccentSet (Accents: TAccentSet);   override;
  104.       {-sets the accented buttons to be displayed}
  105.  
  106.     {--- Suggest List ----}
  107.     procedure ClearSuggestList;  override;
  108.       {-clears the suggest list}
  109.     procedure MakeSuggestions;  override;
  110.       {-sets the suggest list}
  111.    end;
  112.  
  113. implementation
  114.  
  115. {$R *.DFM}
  116.  
  117. procedure TWPSpellDlg.edtWordExit(Sender: TObject);
  118. var
  119.   ChkWord:  String;
  120. begin
  121.   lblNotFound.Caption := edtWord.Text;
  122.   if ActiveControl is TBitBtn then
  123.     exit;
  124.   ChkWord := edtWord.Text;
  125.   if DCT.InDictionary (ChkWord) then
  126.   begin
  127.     lblFound.Caption := cLabels[Language][tlblFound];
  128.     ActiveControl  := btnReplace;
  129.   end {:} else
  130.   begin
  131.     lblFound.Caption := cLabels[Language][tlblNotFound];
  132.     ActiveControl  := btnSuggest;
  133.   end;  { else }
  134. end;
  135.  
  136. procedure TWPSpellDlg.lstSuggestChange(Sender: TObject);
  137. begin
  138.   if lstSuggest.ItemIndex<>-1 then
  139.     edtWord.Text := lstSuggest.Items[lstSuggest.ItemIndex];
  140. end;
  141.  
  142. procedure TWPSpellDlg.lstSuggestDblClick(Sender: TObject);
  143. begin
  144.   if lstSuggest.ItemIndex<>-1 then
  145.     edtWord.Text := lstSuggest.Items[lstSuggest.ItemIndex];
  146.   btnReplaceClick (Sender);
  147. end;
  148.  
  149. procedure TWPSpellDlg.lstSuggestClick(Sender: TObject);
  150. begin
  151.   if lstSuggest.ItemIndex<>-1 then
  152.     edtWord.Text := lstSuggest.Items[lstSuggest.ItemIndex];
  153. end;
  154.  
  155. procedure TWPSpellDlg.lstSuggestEnter(Sender: TObject);
  156. begin
  157.   if lstSuggest.ItemIndex<>-1 then
  158.     edtWord.Text := lstSuggest.Items[lstSuggest.ItemIndex];
  159. end;
  160.  
  161. procedure TWPSpellDlg.FormKeyDown(Sender: TObject; var Key: Word;
  162.   Shift: TShiftState);
  163. var
  164.   ClearKey: Boolean;
  165. begin
  166.   ClearKey := TRUE;
  167.   case Key of
  168.     Ord ('e'): if ssAlt in Shift then ActiveControl := lstSuggest;
  169.     Ord ('w'): if ssAlt in Shift then ActiveControl := edtWord;
  170.     else ClearKey := FALSE;
  171.   end;  { case }
  172.   if ClearKey then Key := 0;
  173. end;
  174.  
  175. procedure TWPSpellDlg.AccentClick(Sender: TObject);
  176. begin
  177.   if Sender is TSpeedButton then
  178.     edtWord.SelText := TSpeedButton (Sender).Caption[1];
  179. end; { TSpellWin.AccentClick }
  180.  
  181. procedure TWPSpellDlg.lstSuggestMouseDown(Sender: TObject;
  182.   Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  183. var
  184.   NewIndex: integer;
  185. begin
  186.   NewIndex := Y div lstSuggest.ItemHeight;
  187.   if NewIndex>lstSuggest.Items.Count-1 then
  188.     NewIndex := lstSuggest.Items.Count-1;
  189.   lstSuggest.ItemIndex := NewIndex;
  190.   if lstSuggest.ItemIndex<>-1 then
  191.     edtWord.Text := lstSuggest.Items[lstSuggest.ItemIndex];
  192. end;
  193.  
  194. {--- Extensions of TAbsSpellDialog ---}
  195. {--- Labels and Prompts ----}
  196. procedure TWPSpellDlg.SetNotFoundPrompt (ToString: String);
  197.   {-sets the not found prompt}
  198. begin
  199.   lblFound.Caption := ToString;
  200. end;  { TWPSpellDlg.SetNotFoundPrompt }
  201.  
  202. procedure TWPSpellDlg.SetNotFoundCaption (ToString: String);
  203.   {-sets the not found caption}
  204. begin
  205.   lblNotFound.Caption := ToString;
  206. end;  { TSpellDlg.SetNotFoundCaption }
  207.  
  208. procedure TWPSpellDlg.SetEditWord (ToWord: String);
  209.   {-sets the edit word string}
  210. begin
  211.   edtWord.Text := ToWord;
  212. end;  { TWPSpellDlg.SetEditWord }
  213.  
  214. function TWPSpellDlg.GetEditWord: String;
  215.   {-gets the edit word}
  216. begin
  217.   Result := edtWord.Text;
  218. end;  { TWPSpellDlg.GetEditWord }
  219.  
  220. procedure TWPSpellDlg.SetEditAsActive;
  221.   {-sets activecontrol the edit control}
  222. begin
  223.   ActiveControl := btnReplace;
  224.   ActiveControl := edtWord;
  225. end;  { TWPSpellDlg.SetEditAsActive }
  226.  
  227. procedure TWpSpellDlg.SetLabelLanguage;
  228.   {-sets labels and buttons to a the language}
  229. begin
  230.   inherited SetLabelLanguage;
  231.   lblFound.Caption := cLabels[Language][tlblFound];
  232.   lblReplace.Caption := cLabels[Language][tlblReplace];
  233.   lblSuggestions.Caption := cLabels[Language][tlblSuggestions];
  234.   btnReplace.Caption := cLabels[Language][tbtnReplace];
  235.   btnAdd.Caption := cLabels[Language][tbtnAdd];
  236.   btnSkip.Caption := cLabels[Language][tbtnSkip];
  237.   btnSkipAll.Caption := cLabels[Language][tbtnSkipAll];
  238.   btnSuggest.Caption := cLabels[Language][tbtnSuggest];
  239.   btnClose.Caption := cLabels[Language][tbtnClose];
  240. end;  { TWpSpellDlg.SetLabelLanguage }
  241.  
  242. {--- Buttons ---}
  243. p